/**
 * 售货柜管理
 * @constructor
 */
function Cabinet() {
}

Cabinet.init = function () {
    bindShopForRoleselect();
    bindShopForRoleselect3();
    $('#tableList').bootstrapTable({
        url: '/cabinet/tableSearch',
        method: 'post',
        striped : true, //是否显示行间隔色
        toolbar: "#toolbar",
        sidePagination: "true",
        dataField: "data",//这是返回的json数组的key.默认是"rows".这里只有前后端约定好就行
        showToggle : true, //是否显示详细视图和列表视图的切换按钮
        striped: true, // 是否显示行间隔色
        uniqueId: "id",
        pageList : [ 5, 10, 20,50,100],//可选择单页记录数
        pageSize: "10",
        pagination: true, // 是否分页
        sortable: true, // 是否启用排序
        sidePagination: 'server', // 设置为服务器端分页     客户端：client
        search:false,
        showColumns: true,
        showRefresh: true,
        //得到查询的参数
        queryParams: function (params) {
            //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            var query_params = {
                //********table的参数 不变
                pageSize: params.limit,                         //页面大小
                pageIndex: (params.offset / params.limit) + 1,   //页码
                sort: params.sort,      //排序列名
                sortOrder: params.order, //排位命令（desc，asc）
                //********
                //获取查询的对象，往下加入
                roomId: $('#search_roomName').val(), // 请求时向服务端传递的参数
                shopId: $('#search_shopName').val(),
                name:$('#search_name').val(),
            };
            return query_params;
        },
        columns: [
            {
                //field: 'Number',//可不加
                title: '序号',//标题  可不加
                align: "center",
                width: 40,
                formatter: function (value, row, index) {
                    var pageSize=$('#tableList').bootstrapTable('getOptions').pageSize;//通过表的#id 可以得到每页多少条
                    var pageNumber=$('#tableList').bootstrapTable('getOptions').pageNumber;//通过表的#id 可以得到当前第几页
                    return pageSize * (pageNumber - 1) + index + 1;//返回每条的序号： 每页条数 * （当前页 - 1 ）+ 序号
                }
            },
            { field: 'shopName', title: '所属店铺名称',align: 'center'},
            { field: 'roomName', title: '所属房间名称',align: 'center'},
            { field: 'name', title: '柜子名称',align: 'center'},
            { title: '类型',align: 'center',
                formatter: function (value, row, index) {
                    let a="";
                    if(row.type==1){
                        a="<span class=\"label label-success\">自研</span>"
                    }else{
                        a="<span class=\"label label-danger\">大马</span>"
                    }
                    return a;
                }
            },
            { field: 'devCode', title: '设备注册码（大马）',align: 'center'},
            { field: 'keyId', title: '接口密码（大马）',align: 'center'},
            { field: 'topic', title: '订阅号（自研）',align: 'center'},
            { field: 'command', title: '开门指令（自研）',align: 'center'},
            {
                title: '操作',
                align: 'center',
                formatter: function (value, row, index) {
                    console.log("row",row)
                    var optionHtml = "";
                    optionHtml = optionHtml+"<a class=\"btn btn-success btn-xs\"  onclick='getqrcode(" + JSON.stringify(row) + ")'><i class=\"fa fa-edit\"></i>二维码</a>&nbsp&nbsp";
                    optionHtml = optionHtml+"<a class=\"btn btn-success btn-xs\"  href=\"/cabinetitem/index/"+row.cabinetId+"\"><i class=\"fa fa-edit\"></i>格子</a>&nbsp&nbsp";
                    optionHtml = optionHtml+"<a class=\"btn btn-success btn-xs\"  href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"open\")' title=\"开售货柜\" ><i class=\"fa fa-edit\"></i>开售货柜</a>&nbsp";
                    optionHtml = optionHtml+"<a class=\"btn btn-success btn-xs\"  href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"edit\")' title=\"修改\" ><i class=\"fa fa-edit\"></i>修改</a>&nbsp";
                    optionHtml = optionHtml + " <a class=\"btn btn-danger btn-xs\" href=\"javascript:void(0)\"  onclick='actionRecord(" + JSON.stringify(row) + ",\"delete\")'  title=\"删除\"><i class=\"fa fa-remove\"></i>删除</a>&nbsp"
                    return optionHtml;
                }
            }
        ]
    });
}

//查询方法****************************
function doSearch() {
    $("#tableList").bootstrapTable("refreshOptions",{pageNumber:1});
}
//重置****************************
function doRest() {
    $("#search_shopName").val("");
    $("#search_roomName").val("");
    $("#search_name").val("");
    $("#tableList").bootstrapTable("refreshOptions",{pageNumber:1});
}
//增加方法****************************
var Action="";
var cabinetId=0;
var pxt="/cabinet"; //控制器名称
var blob;
var canvas;
function addRecord() {
    cabinetId=0;
    Action="add";
    $("#myform")[0].reset();
}
//生成二维码
function getqrcode(row) {
    $("#qrimg").empty();
    var qrcode=$("#qrimg").qrcode({
        render : "canvas",    //设置渲染方式，有table和canvas，使用canvas方式渲染性能相对来说比较好
        text: "http://www.3y-space.com/tea/home?rid="+row.cabinetId+"&key="+row.cabinetId,    //扫描二维码后显示的内容,可以直接填一个网址，扫描二维码后自动跳向该链接
        width : "200",               //二维码的宽度
        height : "200",              //二维码的高度
        background : "#ffffff",       //二维码的后景色
        foreground : "#000000",        //二维码的前景色
        src: "http://www.3y-space.com:18082/images/logo.jpg",             //二维码中间的图片
        });
    $('#myModalAdd2').modal('show');
    canvas = qrcode.context.querySelector("canvas");//获取生成二维码中的canvas，并将canvas转换成base64
    var base64Text = canvas.toDataURL("image/png");
    blob = getBlob(base64Text); //将base64转换成blob对象
    downloadName=row.name;
}
function uploadimg() {
    var link = document.createElement('a');
    var href = window.URL.createObjectURL(blob);
    link.href = href;
    link.download = downloadName;  //a标签的下载属性
    document.body.appendChild(link); // firefox需要把a添加到dom才能正确执行click
    link.click();
}
function getBlob(base64) {
    var mimeString = base64.split(',')[0].split(':')[1].split(';')[0]; // mime类型
    var byteString = atob(base64.split(',')[1]); //base64 解码
    var arrayBuffer = new ArrayBuffer(byteString.length); //创建缓冲数组
    var intArray = new Uint8Array(arrayBuffer); //创建视图
    for (var i = 0; i < byteString.length; i += 1) {
        intArray[i] = byteString.charCodeAt(i);
    }
    return new Blob([intArray], {
        type: mimeString
    });
}
//增加/修改数据保存****************************
function saveRecord() {
    if(!validateForm()) return false
    //创建传递的参数
    var postdata = {
        cabinetId : cabinetId,
        action:Action,
        shopId: $("#text_shopName").val(),  //店铺ID
        roomId: $("#text_roomName").val(),  //房间ID
        name: $("#text_name").val(),  //柜子名称
        type: $("#text_type").val(),  //类型
        devCode: $("#text_devCode").val(),  //设备注册码（大马）
        keyId: $("#text_keyId").val(),  //接口密码（大马）
        topic: $("#text_topic").val(),  //订阅号（自研）
        command: $("#text_command").val(),  //开门指令（自研）
    };
    //发送异步请求到后台保存用户数据
    $.ajax({
        url:pxt+"/save",
        type:"post",
        data:JSON.stringify(postdata),
        contentType:"application/json",
        dataType:"json",
        success:function(data){
            if (data.code === "200") {
                $('#myModalAdd').modal('hide')
                doSearch();
                swal("操作成功!", "请继续操作", "success");
            } else {
                swal("操作失败!", "请重试", "error");
            }
        }
    });
}

//操作相关方法****************************
function actionRecord(data,type) {
    if(type=="edit"){
        //修改
        cabinetId=data.cabinetId;
        Action="edit";
        $("#myform")[0].reset();
        $("#save").removeAttr("disabled");
        WriteData(data)
        $('#myModalAdd').modal('show')
    }else if(type=="delete"){
        //删除
        swal({
            title: "确认是否删除",
            text: "是否确认要删除该条记录？",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "删除",
            cancelButtonText: "取消",
            closeOnConfirm: false
        }, function () {
            //点击删除之后此处进行传递后台
            $.ajax({
                type: "delete",
                url: pxt+"/deleteById/"+data.cabinetId,
                dataType : "json",
                contentType: "application/json",
                success: function (data, status) {
                    if (data.code == "200") {
                        doSearch();
                        swal("删除成功!", "请继续操作", "success");
                    }
                    else{
                        swal("删除失败!", "请重试", "error");
                    }
                }
            });

        });
    }else if(type=="open"){
        //开柜子
        swal({
            title: "确认是否打开全部格子",
            text: "是否确认要打开全部格子？",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "打开",
            cancelButtonText: "取消",
            closeOnConfirm: false
        }, function () {
            //点击打开之后此处进行传递后台
            if(data.type==1){
                $.ajax({
                    type: "get",
                    url: pxt+"/openById/"+data.cabinetId,
                    dataType : "json",
                    contentType: "application/json",
                    success: function (data, status) {
                        if (data.code == "200") {
                            doSearch();
                            swal("打开成功!", "请继续操作", "success");
                        }
                        else{
                            swal("打开失败!", "请重试", "error");
                        }
                    }
                });
            }else if(data.type==2){
                $.ajax({
                    type: "get",
                    url: pxt+"/openByIddm/"+data.cabinetId,
                    dataType : "json",
                    contentType: "application/json",
                    success: function (data, status) {
                        if (data.code == "200") {
                            doSearch();
                            swal("打开成功!", "请继续操作", "success");
                        }
                        else{
                            swal("打开失败!", "请重试", "error");
                        }
                    }
                });
            }
        });
    }
}

//给控件赋值****************************
function WriteData(data) {
    $("#text_shopName").val(data.shopId);
    bindShopForRoleselect4();
    $("#text_roomName").val(data.roomId);
    $("#text_name").val(data.name);
    $("#text_type").val(data.type);
    $("#text_devCode").val(data.devCode);
    $("#text_keyId").val(data.keyId);
    $("#text_topic").val(data.topic);
    $("#text_command").val(data.command);
}

//表单验证*****************************
function validateForm() {
    //validate方法参数可选
    return $("#myform").validate({
        rules: {
            text_shopName: {
                required: true,//必填
                minlength: 1, //最少1个字符
            },
            text_roomName: {
                required: true,//必填
                minlength: 1, //最少1个字符
            },
            text_type: {
                required: true,//必填
                minlength: 1, //最少1个字符
            },
            text_name: {
                required: true,//必填
                minlength: 1, //最少1个字符
                maxlength: 500,//最多11个字符
            },
        },
        //错误信息提示
        messages: {
            text_shopName: {
                required: "(必填)",
                minlength: "最少1位",
            },
            text_roomName: {
                required: "(必填)",
                minlength: "最少1位",
            },
            text_type: {
                required: "(必填)",
                minlength: "最少1位",
            },
            text_name: {
                required: "(必填)",
                minlength: "最少1位",
                maxlength: "最长500位",
            },
        },
    }).form();

}
//绑定下拉****************************
function bindShopForRoleselect() {

    $.ajax({
        url: "/room/getShopForRole",
        type: "get",
        contentType: "application/json",
        dataType: "json",
        success: function (data) {
            var ddl1 = $("#search_shopName");
            //删除节点
            $("#search_shopName option").remove();

            //转成Json对象
            var result = eval(data.data);
            var opt1 = $("<option value=''></option>").text("--请选择所属商铺--").val("");

            ddl1.append(opt1);

            //循环遍历 下拉框绑定
            $(result).each(function (key) {
                //添加option 对应Json对象名称
                opt1 = $("<option></option>").text(result[key].name).val(result[key].id);

                ddl1.append(opt1);

            });
        },
        error: function () {
            // alert("Error");
        }
    });

}
//绑定下拉****************************
function bindShopForRoleselect2() {

    $.ajax({
        url: "/room/getRoomName/"+$("#search_shopName").val(),
        type: "get",
        contentType: "application/json",
        dataType: "json",
        success: function (data) {
            var ddl1 = $("#search_roomName");
            //删除节点
            $("#search_roomName option").remove();

            //转成Json对象
            var result = eval(data.data);
            var opt1 = $("<option value=''></option>").text("--请选择所属房间--").val("");

            ddl1.append(opt1);
            //循环遍历 下拉框绑定
            $(result).each(function (key) {
                //添加option 对应Json对象名称
                opt1 = $("<option></option>").text(result[key].name).val(result[key].id);
                ddl1.append(opt1);

            });
        },
        error: function () {
            // alert("Error");
        }
    });

}
//绑定下拉****************************
function bindShopForRoleselect3() {

    $.ajax({
        url: "/room/getShopForRole",
        type: "get",
        contentType: "application/json",
        dataType: "json",
        async:false,
        success: function (data) {
            var ddl1 = $("#text_shopName");
            //删除节点
            $("#text_shopName option").remove();

            //转成Json对象
            var result = eval(data.data);
            var opt1 = $("<option value=''></option>").text("--请选择所属商铺--").val("");

            ddl1.append(opt1);

            //循环遍历 下拉框绑定
            $(result).each(function (key) {
                //添加option 对应Json对象名称
                opt1 = $("<option></option>").text(result[key].name).val(result[key].id);

                ddl1.append(opt1);

            });
        },
        error: function () {
            // alert("Error");
        }
    });

}
//绑定下拉****************************
function bindShopForRoleselect4() {

    $.ajax({
        url: "/room/getRoomName/"+$("#text_shopName").val(),
        type: "get",
        contentType: "application/json",
        dataType: "json",
        async:false,
        success: function (data) {
            var ddl1 = $("#text_roomName");
            //删除节点
            $("#text_roomName option").remove();

            //转成Json对象
            var result = eval(data.data);
            var opt1 = $("<option value=''></option>").text("--请选择所属房间--").val("");

            ddl1.append(opt1);

            //循环遍历 下拉框绑定
            $(result).each(function (key) {
                //添加option 对应Json对象名称
                opt1 = $("<option></option>").text(result[key].name).val(result[key].id);

                ddl1.append(opt1);

            });
        },
        error: function () {
            // alert("Error");
        }
    });

}
